
using Nop.Core.Domain.Catalog;

namespace Nop.Services.Catalog
{
    /// <summary>
    /// Copy product service
    /// </summary>
    public partial interface ICopyProductService
    {
        /// <summary>
        /// Creates a copy of product with all depended data
        /// </summary>
        /// <param name="productId">The product identifier</param>
        /// <param name="newName">The name of product duplicate</param>
        /// <param name="isPublished">A value indicating whether the product duplicate should be published</param>
        /// <param name="copyImages">A value indicating whether the product images should be copied</param>
        /// <returns>Product entity</returns>
        Product CopyProduct(int productId, string newName, bool isPublished, bool copyImages);

        /// <summary>
        /// Create a copy of product variant with same region
        /// </summary>
        /// <param name="productvariantId">The product variant identifier</param>
        /// <param name="newName">The name of product variant duplicate</param>
        /// <param name="isPublished">A value indicating whether the product variant duplicate should be published</param>
        /// <param name="regionId">Region identifier</param>
        /// <param name="quantity">Quantity</param>
        /// <param name="newPrice">The new price of product variant</param>
        /// <returns>-1 means fail, 0 means add inventory, >0 means new product variant id</returns>
        int CopyProductVariantAndGetNewId(int productvariantId, string newName, bool isPublished, int regionId, int quantity, decimal newPrice);
    }
}
